import re 

#pattern = re.compile(r'(?<=-|+)\d+')
pattern = re.compile(r'-?\d+\.?\d*')
print pattern.findall('a123b')  
print pattern.findall('a123.45b') 
print pattern.findall('a-123b') 
print pattern.findall('a-123.45b') 
print pattern.findall('a123.b') 
print pattern.findall('a-123.b')
